<!DOCTYPE html>
<html lang="ch-CN">
<head>
  <meta charset="UTF-8">
  <title>工厂方法创建对象</title>
</head>
<style>
  body {
    width: 100%;
    height: 100vh;
    background-color: wheat;
    font-size: 30px;
    text-decoration: none;
    font-family: "华文楷体";
  }
</style>
<script>
  /*
      * 缺陷:输出的类型都是Object,并没有分类 人和狗都在一个分类中,需要使用构造函数分类
  */
  // 使用工厂方法创建对象可以大批量创建对象
  // 创建人的对象
  function createPerson(name, age, gender) {
    // 创建一个新对象 let obj = {}也可以
    let obj = new Object();
    // 像对象添加属性
    obj.name = name
    obj.age = age
    obj.gender = gender
    obj.sayName = function () {
      document.write("name:" + this.name + "age:" + this.age + "gender:" + this.gender + "<br>")
    }
    return obj;
  }

  // 创建dog对象
  function createDog(name, age) {
    // 创建一个新对象 let obj = {}也可以
    let obj = {};
    // 像对象添加属性
    obj.name = name
    obj.age = age
    obj.sayName = function () {
      document.write("Dog_name:" + this.name + "Dog_age:" + this.age + "<br>")
    }
    return obj;
  }

  let obj1 = createPerson("小兰", 31, "女");
  let obj2 = createPerson("小明", 45, "男");
  let obj3 = createPerson("小花", 11, "女");
  obj1.sayName()
  obj2.sayName()
  obj3.sayName()
  let obj4 = createDog("小白", 31);
  let obj5 = createDog("小黑", 45);
  obj4.sayName()
  obj5.sayName()

  // 缺陷:输出的类型都是Object,并没有分类 人和狗都在一个分类中,需要使用构造函数分类
  document.write(obj1+"<br>"+obj4)
</script>
<body>
</body>
</html>